<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // function a(x){
        //     this.x = x;
        //     return this
        // }
        // var x = a(5)
        // var y = a(6)
        // // console.log(x.x) //window.x.x  undefined
        // // console.log(y.x)  //window.y.x 6




        // // 注意
        // function Foo() {
        //     Foo.a = function () {
        //         console.log(1)
        //     }
        //     this.a = function () {
        //         console.log(2)
        //     }

        // }
        // Foo.prototype.a = function () {
        //     console.log(3)
        // }

        // Foo.a = function () {
        //     console.log(4)
        // }
        // console.dir(Foo)
        // Foo.a() // 4
        // let abj = new Foo();
        // abj.a(); // 2
        // Foo.a() // 1


        // var name = "tome";
        // (function () {
        //     if (typeof name == "undefined") {
        //         name = "jack"; // var 则走这步
        //         console.log('gb' + name)
        //     } else {
        //         console.log("hl" + name)
        //     }
        // })()


        // for (var i = 0; i < 4; i++) {
        //     setTimeout(function () {
        //         console.log(i);
        //     }, 300);
        // }


        // function test(a,b){
        //     console.log(b)
        //     return {
        //         test: function(c){
        //             return test(c,a)
        //         }
        //     }
        // }

        // var retA = test(0); // undefined
        // retA.test(2); //c=2 a=0  a=2, b= 0
        // retA.test(4); 
        // retA.test(8);

        // var retB = test(0).test(2).test(4).test(8);
        // var retC = test("good").test("bad")  // unde
        // retC.test("good")
        // retC.test("bad")


        // for (var i = 0; i < 10; i++) {
        //     setTimeout(() => {
        //         console.log(i);
        //     }, 1000)
        // }

        // var b = 10;
        // (function b() {
        //     b = 20;
        //     console.log(b);
        // })();

        // var b = 10;
        // (function () {
        //     console.log(b);
        //     b = 20;
        // })();

        // var b = 10;
        // (function b() {
        //     var b = 20;
        //     console.log(b);
        // })();

        // var a = 10;
        // (function () {
        //     console.log(a)
        //     a = 5
        //     console.log(window.a)
        //     var a = 20;
        //     console.log(a)
        // })()

        // async function async1() {
        //     console.log('async1 start');
        //     await async2();
        //     console.log('async1 end');
        // }
        // async function async2() {
        //     console.log('async2');
        // }
        // console.log('script start');
        // setTimeout(function () {
        //     console.log('setTimeout');
        // }, 0)
        // async1();
        // new Promise(function (resolve) {
        //     console.log('promise1');
        //     resolve();
        // }).then(function () {
        //     console.log('promise2');
        // });
        // console.log('script end');

        // var a = ?; // 求？
        // var a = {
        //     i: 1,
        //     toString() {
        //         return a.i++;
        //     }
        // }
        // if (a == 1 && a == 2 && a == 3) {
        //     console.log(1);
        // }


        // var obj = {
        //     '2': 3,
        //     '3': 4,
        //     'length': 2,
        //     'splice': Array.prototype.splice,
        //     'push': Array.prototype.push
        // }
        // obj.push(1)
        // obj.push(2)
        // console.log(obj)


        // var a = { n: 1 };
        // var b = a;
        // a.x = a = { n: 2 };

        // console.log(a.x)
        // console.log(b.x)



        // // example 1
        // var a = {}, b = '123', c = 123;
        // a[b] = 'b';
        // a[c] = 'c';
        // console.log(a[b]);

        // // example 2
        // var a = {}, b = Symbol('123'), c = Symbol('123');
        // a[b] = 'b';
        // a[c] = 'c';
        // console.log(a[b]);


        // // example 3
        // var a = {}, b = { key: '123' }, c = { key: '456' };
        // a[b] = 'b';
        // a[c] = 'c';
        // console.log(a[b]);


        Function.prototype.a = 1;
        Object.prototype.a = 2;
        function fn(){}
        let obj = new fn();
        console.log(obj.a);
        console.dir(obj)
        
    </script>
</body>

</html>